package com.rc.saas.tenant.transfers.alipay;


import com.alipay.api.CertAlipayRequest;
import com.alipay.api.response.AlipayFundAccountQueryResponse;
import com.alipay.api.response.AlipayFundTransCommonQueryResponse;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.rc.saas.tenant.common.vo.TResponse;
import com.rc.saas.tenant.model.acct.AcctWithdrawOrder;
import com.rc.saas.tenant.model.acct.TenantOperatorAcctSetting;
import com.rc.saas.tenant.model.member.MemberInfo;
import com.rc.saas.tenant.model.operator.TenantOperator;
import com.rc.saas.tenant.model.tenant.Tenant;
import com.rc.saas.tenant.model.tenant.TenantSetting;
import com.rc.saas.tenant.model.transfer.TransferOrder;
import com.rc.saas.tenant.transfers.alipay.vo.AlipayTransPayWalletVo;
import org.weixin4j.pay.model.paywallet.TransPayWallet;
import org.weixin4j.pay.model.paywallet.TransPayWalletInfo;

import javax.servlet.http.HttpServletRequest;

/**
 * 单笔转账至支付宝接口
 * https://opendocs.alipay.com/open/309/106235
 * Created by Sven on 2021/01/28
 */
public interface AliPayWalletService {
    //转账额度
    //单笔限额：转账给个人支付宝账户，单笔最高 5 万元；转账给企业支付宝账户，单笔最高 10 万元。
    //日限额：初始额度为 200 万元，即每日最高可转 200 万元。
    //月限额：初始额度为 3100 万元，即每月最高可转 3100 万元。
    //以上限额支付宝会根据实际转账资金情况进行调整，具体以实际支持为准。

    //接口
    //转账到支付宝账户产品提供下述 4 个接口，详情请参见 快速接入。
    //接口名称	描述	使用场景
    //单笔转账至支付宝接口	用于向指定支付宝账户转账	需要转账时调用。
    //转账业务单据查询接口	用于查询转账结果	调用单笔转账到支付宝帐户接口时，如果由于网络或系统异常暂时无法返回到账结果，可以使用该接口查询转账订单状态。
    //支付宝账户余额查询接口（alipay.fund.account.query)	用于查询支付宝账户余额	需要获取支付宝余额时调用。
    //转账单据状态变更通知接口（alipay.fund.trans.order.changed)	用于转账单据状态变更后触发的通知	除了依赖单笔转账到支付宝帐户接口同步结果外，可监听蚂蚁消息来获取打款结果，该消息只在转账成功时发送。

    /**
     * 单笔转账至支付宝接口 alipay.fund.trans.uni.transfer
     */
    TResponse transPayWallet(HttpServletRequest request, TenantOperator tenantOperator, AlipayTransPayWalletVo alipayTransPayWalletVo, TenantOperatorAcctSetting acctSetting);

    /**
     * 账户余额查询接口alipay.fund.account.query
     * 调用 alipay.fund.account.query(支付宝资金账户资产查询接口)查询请求发起方（即商户自己）的支付宝账户余额，该接口只能查询调用账号的余额，不得查询非请求账号余额。
     */
    AlipayFundAccountQueryResponse accountQuery(CertAlipayRequest certAlipayRequest, AlipayTransPayWalletVo alipayTransPayWalletVo, TenantSetting tenantSetting);

    /**
     * 转账业务单据查询接口 alipay.fund.trans.common.query
     */
    AlipayFundTransCommonQueryResponse queryTransferInfo(CertAlipayRequest certAlipayRequest, AlipayFundTransUniTransferResponse transferResponse);
}
